उजागर .git निर्देशिकाओं के लिए मेरे पहले स्कैन के बाद, मैंने उजागर .env फ़ाइलों के लिए एक और स्कैन किया। इस स्कैन के दौरान मुझे 200 से अधिक उजागर .env फ़ाइलें मिलीं। हानिरहित कॉन्फ़िगरेशन सेटिंग्स के अलावा मुझे 135 डेटाबेस उपयोगकर्ता और पासवर्ड, पासवर्ड के साथ 48 ई-मेल उपयोगकर्ता खाते, भुगतान प्रदाताओं के लिए 11 लाइव क्रेडेंशियल (जैसे स्ट्राइप या पेपैल), विभिन्न एपीआई के लिए 98 गुप्त टोकन और 128 ऐप रहस्य (सुरक्षित रूप से सत्र उत्पन्न करने के लिए रहस्य) मिले आईडी, सीएसआरएफ-टोकन और जेडब्ल्यूटी-टोकन) और कुछ हार्ड कोडित व्यवस्थापक क्रेडेंशियल।
TLDR : परिनियोजन प्रक्रिया में गलतियों से सावधान रहें। अपनी छिपी हुई .env फ़ाइल को कभी भी जनता के सामने प्रकट न करें।
मैं एसडीकैट एक जिज्ञासु दिमाग वाला एक सॉफ्टवेयर डेवलपर हूं जो हर जगह हुड के नीचे देखना पसंद करता है। उजागर .git निर्देशिकाओं के लिए मेरे स्कैन के बाद मैंने इस खरगोश के छेद में गहराई तक जाने का फैसला किया। और फैसला किया कि मैं उजागर .env फाइलों की जांच करूंगा।
इस पोस्ट में मैं वर्णन करता हूं कि .env फ़ाइल क्या है, मैंने डोमेन को कैसे स्कैन किया और इन फ़ाइलों में क्या पाया गया, इसके बारे में कुछ आँकड़े। इस डेटा के विश्लेषण से कभी-कभी विभिन्न सेवाओं और खातों के लिए कई साख का पता चलता है।
प्रत्येक सॉफ़्टवेयर को कुछ कॉन्फ़िगरेशन की आवश्यकता होती है और इसमें विभिन्न सेटिंग्स होती हैं। उपयोगकर्ता सॉफ़्टवेयर के मामले में, जैसे कि मेल क्लाइंट, इन सेटिंग्स, जैसे ईमेल पता, उपयोगकर्ता नाम और पासवर्ड, उपयोगकर्ता से पहली बार सॉफ़्टवेयर प्रारंभ होने पर अनुरोध किया जाता है। सॉफ़्टवेयर के लिए जो सर्वर पर चलता है और अक्सर स्वचालित रूप से स्थापित होता है, उपयोगकर्ता सहभागिता संभव नहीं है। कुछ सॉफ़्टवेयर फ़्रेमवर्क के लिए, इन सेटिंग्स को पर्यावरण चर के माध्यम से निर्दिष्ट किया जा सकता है और .env नाम की फ़ाइल में कॉन्फ़िगर किया जा सकता है। .env फ़ाइलें छिपी हुई फ़ाइलें हैं, इसलिए आप इन फ़ाइलों को डिफ़ॉल्ट रूप से नहीं देखते हैं।
एक .env फ़ाइल का उदाहरण:
ENV= "PRODUCTION"
LOG_LEVEL= "INFO"
SMTP_HOST= "email.example.com"
SMTP_PORT= 25
SMTP_USER= "[email protected]"
SMTP_PASS= "SuperSecurePassword2022"
SMTP_TLS= 1
SMTP_CONNECTION_TIMEOUT_SECONDS= 2
DB_HOST= "dbserver.example.com"
DB_DATABASE_NAME= "important_database"
DB_USER= "my-app-db-user"
DB_PASSWORD= "2022SuperVerySecurePassword"
PAYMENT_GATEWAY= "payment.example.com"
PAYMENT_SECRET= "super-secure-payment-api-secret"
नोट: हम ऊपर दिए गए उदाहरणों में बताए गए पासवर्ड की तुलना में अधिक सुरक्षित पासवर्ड की सलाह देते हैं।
चूंकि लगभग हर वेब एप्लिकेशन डेटाबेस तक पहुंचता है या संचार के लिए कुछ एपीआई का उपयोग करता है, इसलिए इन क्रेडेंशियल्स को एप्लिकेशन को पास किया जाना चाहिए। यदि यह .env फ़ाइल का उपयोग करके किया जाता है, तो क्रेडेंशियल इस फ़ाइल में सादे पाठ में हैं। जब वेब सर्वर गलत तरीके से कॉन्फ़िगर किया जाता है और यह .env फ़ाइल वेब सर्वर द्वारा वितरित की जाती है, तो कोई भी इस डेटा को क्वेरी कर सकता है। ऐसा करने के लिए, एक ब्राउज़र के साथ सिर्फ एक यूआरएल पर जा सकते हैं, जैसे: https://example.com/.env।
खतरनाक पहलू यह है कि पासवर्ड और रहस्य .env फ़ाइल में अनएन्क्रिप्टेड रूप में होते हैं।
मैंने एक ऐसा देश चुना है जो इस देश के सभी डोमेन प्राप्त करने के लिए DNS ज़ोन स्थानांतरण की अनुमति देता है। संपूर्ण ज़ोन फ़ाइल को डाउनलोड करने में कुछ समय लगेगा। एक साधारण पायथन लिपि के साथ, मैंने एनएस रिकॉर्ड निकाले और इन रिकॉर्ड्स से डोमेन नाम निकाले।
एक अन्य पायथन लिपि के साथ मैं डोमेन पढ़ता हूं और http://<domain>/.env पर एक अनुरोध भेजता हूं। मैंने http://www.<domain>/.env, https://<domain>/.env और https://www.<domain>/.env को भी चेक किया।
एसएसएल प्रमाणपत्र जांच को अनदेखा करना महत्वपूर्ण है। मुझे पता चला कि कई फाइलें https पर मिलीं लेकिन एक अमान्य प्रमाणपत्र के साथ। अमान्य एसएसएल प्रमाणपत्रों को अनदेखा करके इन निर्देशिकाओं को वैसे भी एक्सेस किया जा सकता है।
मैंने 2.6 मिलियन डोमेन स्कैन किए और पाया:
ये केवल मुख्य डोमेन के परिणाम हैं। कल्पना कीजिए कि क्या होगा यदि हम सभी उप डोमेन स्कैन करें। मुझे इसमें कोई संदेह नहीं है कि आपको वहां और भी बहुत कुछ मिलेगा।
आप अपने डोमेन और सबडोमेन को एक न्यूक्लियर टेम्प्लेट के साथ स्कैन कर सकते हैं या आप अपने डोमेन और सबडोमेन को उजागर संवेदनशील फाइलों के लिए स्वचालित रूप से जांचने के लिए scan.nan.io जैसी सेवा का उपयोग कर सकते हैं।
दूर ले जाएं : छिपी हुई .env फ़ाइल को उजागर न करने के लिए अपने सर्वर और परिनियोजन की जाँच करें।